コード例 #1
0
        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));
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        /// <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));
        }