67 lines
1.6 KiB
C#
67 lines
1.6 KiB
C#
using TextSender_API.Models;
|
|
|
|
namespace TextSender_API.Controllers;
|
|
|
|
public class ContactManagement
|
|
{
|
|
#region Fields
|
|
private IConfiguration _config;
|
|
#endregion
|
|
|
|
|
|
#region Constructors
|
|
public ContactManagement(IConfiguration config)
|
|
{
|
|
this._config = config;
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region Methods
|
|
// Queues the contact file to be processed latter
|
|
public ContactCreationQueue QueueContact(IFormFile file)
|
|
{
|
|
var queue = new ContactCreationQueue();
|
|
queue.Processed = false;
|
|
var directory = this._config["Paths:ContactQueueDirectory"];
|
|
|
|
if (directory!.ElementAt(directory!.Length - 1) != '/')
|
|
{
|
|
directory.Append('/');
|
|
}
|
|
|
|
if (!System.IO.Directory.Exists(directory))
|
|
{
|
|
queue.Status = "Missing directory";
|
|
// Directory does not exist
|
|
return queue;
|
|
}
|
|
|
|
var length = 16;
|
|
var chars = "ABCDEF0123456789";
|
|
var random = new Random();
|
|
var filename = new string(Enumerable.Repeat(chars, length).Select(s =>
|
|
s[random.Next(s.Length)]).ToArray());
|
|
var extension = ".txt";
|
|
|
|
var contactPath = $"{directory}/{filename}{extension}";
|
|
queue.Filepath = contactPath;
|
|
|
|
if (System.IO.File.Exists(contactPath))
|
|
{
|
|
// Already exists
|
|
queue.Status = "File exists";
|
|
return queue;
|
|
}
|
|
|
|
queue.Status = "Created";
|
|
|
|
using (var filestream = new FileStream(contactPath, FileMode.Create))
|
|
{
|
|
file.CopyTo(filestream);
|
|
}
|
|
|
|
return queue;
|
|
}
|
|
#endregion
|
|
} |