internal static async Task <Result> Item(string site, Tables.dbo.Client item) { ResultStatus resultStatus; var messages = new List <string>(); try { await using var cmd = new SqlCommand("[dbo].[SaveClient]", new Base().SqlConnection) { CommandType = CommandType.StoredProcedure }; cmd.Parameters.Add("@SiteId", SqlDbType.UniqueIdentifier).Value = item.SiteId; cmd.Parameters.Add("@Id", SqlDbType.UniqueIdentifier).Value = item.Id; cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 20).Value = item.Name; cmd.Parameters.Add("@EmailAddress", SqlDbType.NVarChar, 256).Value = item.EmailAddress; await cmd.Connection.OpenAsync(); await cmd.ExecuteNonQueryAsync(); await cmd.Connection.CloseAsync(); resultStatus = ResultStatus.Succeeded; } catch (System.Exception ex) { await Exception.Save(site, ex, "dbo.Client"); resultStatus = ResultStatus.Failed; messages.Add(ex.Message); } return(new Result(resultStatus, messages)); }
private static async Task <models.Client> Item(Tables.dbo.Client client, Guid?inquiryId) { try { List <Tables.Upload.Client> uploads = inquiryId.HasValue ? await dbUploadRead.List(client.Id, inquiryId) : await dbUploadRead.List(client.Id); var output = new models.Client { Id = client.Id, Name = client.Name, EmailAddress = client.EmailAddress, Uploads = uploads.Select(n => new Models.ProfessionalTranslator.Net.Upload.Client { Id = n.Id, GeneratedFilename = n.GeneratedFilename, OriginalFilename = n.OriginalFilename }).ToList() }; return(output); } catch (System.Exception ex) { Console.Write(ex.Message); return(null); } }
public static async Task <models.Client> Item(string emailAddress) { if (string.IsNullOrWhiteSpace(emailAddress)) { return(null); } Tables.dbo.Client client = await dbRead.Client.Item(emailAddress); return(client == null ? null : await Item(client, null)); }
public static async Task <models.Client> Item(Guid?id, Guid?inquiryId) { if (!id.HasValue || !inquiryId.HasValue) { return(null); } Tables.dbo.Client client = await dbRead.Client.Item(id.Value); return(await Item(client, inquiryId)); }
/// <summary> /// Saves client and client uploads. /// </summary> /// <instructions> /// Set inputItem.Id to null when creating a new object. /// </instructions> /// <param name="site">Name of site related to testimonial.</param> /// <param name="inputItem">Client object.</param> /// <returns>Returns save status and messages. If successful, returns an identifier via ReturnId.</returns> public static async Task <Result> Save(string site, models.Client inputItem) { var saveStatus = ResultStatus.Undetermined; var messages = new List <string>(); if (inputItem == null) { return(new Result(ResultStatus.Failed, "Client cannot be null.")); } Tables.dbo.Site siteItem = await dbRead.Site.Item(site); if (siteItem == null) { return(new Result(ResultStatus.Failed, "No site was found with that name.")); } Rules.StringRequiredMaxLength(inputItem.Name, "Name", 150, ref messages); if (Rules.StringRequiredMaxLength(inputItem.EmailAddress, "Email Address", 256, ref messages) == Rules.Passed.Yes) { Rules.ValidateEmailAddress(inputItem.EmailAddress, "Email Address", ref messages); } foreach (Models.ProfessionalTranslator.Net.Upload.Client uploads in inputItem.Uploads) { Rules.StringRequiredMaxLength(uploads.GeneratedFilename, "Generated filename", 45, ref messages); Rules.StringRequiredMaxLength(uploads.OriginalFilename, "Original filename", 256, ref messages); } if (messages.Any()) { return(new Result(ResultStatus.Failed, messages)); } var saveItem = new Tables.dbo.Client { Id = inputItem.Id, SiteId = siteItem.Id, Name = inputItem.Name, EmailAddress = inputItem.EmailAddress }; Result saveClientResult = await dbWrite.Item(site, saveItem); if (saveClientResult.Status == ResultStatus.Failed) { return(saveClientResult); } // ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator foreach (Models.ProfessionalTranslator.Net.Upload.Client uploads in inputItem.Uploads) { var saveUpload = new Tables.Upload.Client { Id = uploads.Id, ClientId = saveItem.Id, GeneratedFilename = uploads.GeneratedFilename, OriginalFilename = uploads.OriginalFilename }; Result uploadResult = await DatabaseOperations.Upload.Write.Client.Item(saveUpload); if (uploadResult.Status != ResultStatus.Failed) { continue; } saveStatus = ResultStatus.PartialSuccess; messages.AddRange(uploadResult.Messages); } if (saveStatus == ResultStatus.Undetermined) { saveStatus = ResultStatus.Succeeded; } return(new Result(saveStatus, messages, inputItem.Id)); }