Beispiel #1
0
        public HttpResponse Add(AddIssueFormModel model)
        {
            if (!this.UserCanAccessCar(model.CarId))
            {
                return(Unauthorized());
            }

            var modelErrors = this.validator.ValidateIssue(model);

            if (modelErrors.Any())
            {
                return(Error(modelErrors));
            }

            var issue = new Issue
            {
                Description = model.Description,
                CarId       = model.CarId
            };

            data.Issues.Add(issue);

            data.SaveChanges();

            return(Redirect($"/Issues/CarIssues?carId={model.CarId}"));
        }
        public HttpResponse Add(AddIssueFormModel model, string carId)
        {
            var issueToAdd = new Issue()
            {
                Description = model.Description,
                CarId       = carId
            };

            this.data.Issues.Add(issueToAdd);

            this.data.SaveChanges();

            return(Redirect($"/Issues/CarIssues?carId={issueToAdd.CarId}"));
        }
Beispiel #3
0
        public ICollection <string> ValidateIssue(AddIssueFormModel issue)
        {
            var errors = new List <string>();

            if (issue.CarId == null)
            {
                errors.Add($"Car ID cannot be empty.");
            }

            if (issue.Description.Length < IssueMinDescription)
            {
                errors.Add($"Description '{issue.Description}' is not valid. It must have more than {IssueMinDescription} characters.");
            }

            return(errors);
        }
Beispiel #4
0
        public HttpResponse Add(AddIssueFormModel model)
        {
            if (!this.UserCanAccessCar(model.CarId))
            {
                return(Unauthorized());
            }

            var modelErrors = this.validator.ValidateIssue(model);

            if (modelErrors.Any())
            {
                return(Error(modelErrors));
            }

            this.issueService.Add(model.Description, model.CarId);

            return(Redirect($"/Issues/CarIssues?carId={model.CarId}"));
        }
Beispiel #5
0
        public async Task <IActionResult> AddIssue([FromBody] AddIssueFormModel issueForm)
        {
            var resp = await _issueService.AddIssueAsync(HttpContext.GetUser(), issueForm);

            return(Ok(GetRequestResult(resp)));
        }
        public async Task <long> AddIssueAsync(User user, AddIssueFormModel issueForm)
        {
            try
            {
                var issue    = new Issue();
                var userInfo = await _context.Users.FirstOrDefaultAsync(c => c.Id == issueForm.UserId);

                if (userInfo == null)
                {
                    throw new ExperienceManagementGlobalException(UsersServiceErrors.UserNotFoundError);
                }

                FileAddress fileAddress;
                if (issueForm.ImageId != null)
                {
                    fileAddress = await _context.FileAddresses.FindAsync(issueForm.ImageId);

                    if (fileAddress == null)
                    {
                        throw new ExperienceManagementGlobalException(IssueServiceErrors.NotExistFileAddressError);
                    }
                    try
                    {
                        if (!File.Exists(fileAddress.FilePath))
                        {
                            throw new ExperienceManagementGlobalException(IssueServiceErrors.FileNotFoundError);
                        }
                        Image image   = Image.FromFile(fileAddress.FilePath);
                        Image thumb   = image.GetThumbnailImage(120, 120, () => false, IntPtr.Zero);
                        var   newPath = Path.ChangeExtension(fileAddress.FilePath, "thumb");
                        thumb.Save(newPath);
                        fileAddress.FilePath = newPath;
                        fileAddress.FileType = "thumb";
                        _context.FileAddresses.Update(fileAddress);
                        issue.FileId = fileAddress.FileId;
                    }
                    catch (Exception ex)
                    {
                        throw new ExperienceManagementGlobalException(IssueServiceErrors.ChangeToThumbnailError, ex);
                    }
                }
                //var IsExistEquipment = _context.Equipments.All(c => issueForm.EquipmentIds.Contains(c.Id));
                //if (!IsExistEquipment)
                //{
                //    throw new ExperienceManagementGlobalException(IssueServiceErrors.NotExistEquipmentsListError);
                //}
                issueForm.EquipmentIds.ForEach(async resp =>
                {
                    var equipmentIssueSubscription         = new EquipmentIssueSubscription();
                    equipmentIssueSubscription.Issue       = issue;
                    equipmentIssueSubscription.EquipmentId = resp;
                    await _context.EquipmentIssueSubscriptions.AddAsync(equipmentIssueSubscription);
                });


                issue.IsActive       = false;
                issue.IssueType      = (IssueType)issueForm.IssueType;
                issue.Title          = issueForm.Title;
                issue.Description    = issue.Description;
                issue.CreationDate   = DateTime.Now;
                issue.LastUpdateDate = DateTime.Now;
                issue.UserId         = user.Id;
                await _context.Issues.AddAsync(issue);

                await _context.SaveChangesAsync();

                return(issue.Id);
            }
            catch (Exception ex)
            {
                throw new ExperienceManagementGlobalException(IssueServiceErrors.AddIssueError, ex);
            }
        }