Ejemplo n.º 1
0
        public async Task <ActionResult> Create(TaskVm data)
        {
            using (_entities)
            {
                var projectDetails = await _entities.Projects.FindAsync(data.ProjectId);

                var taskCount = await _entities.TaskCategories.Where(s => s.ProjectId == data.ProjectId).ToListAsync();

                var currentTask  = taskCount.Count + 1;
                var userMasterId = Convert.ToInt64(CookieHelper.GetCookie(CookieName.UserMasterId));

                if (data.TaskMasterId > 0)
                {
                    //Update code HERE
                    var taskmaster = await _entities.TaskMasters.FindAsync(data.TaskMasterId);

                    if (taskmaster != null)
                    {
                        taskmaster.ProjectId          = data.ProjectId;
                        taskmaster.ActualTimeHours    = data.ActualTimeHours;
                        taskmaster.AssignyId          = data.AssignyId;
                        taskmaster.Description        = data.Description;
                        taskmaster.EstimateTimeHours  = data.EstimateTimeHours;
                        taskmaster.PriorityMasterId   = data.PriorityMasterId;
                        taskmaster.TaskStatusMasterId = data.TaskStatusMasterId;
                        taskmaster.UpdatedBy          = userMasterId;
                        taskmaster.UpdatedDate        = DateTime.Now;
                        taskmaster.StartDate          = DateTime.ParseExact(data.StartDateString,
                                                                            data.StartDateString.Contains('-') ? "dd-MM-yyyy" : "dd/MM/yyyy",
                                                                            CultureInfo.InvariantCulture);
                        if (!string.IsNullOrWhiteSpace(data.EndDateString))
                        {
                            taskmaster.EndDate = DateTime.ParseExact(data.EndDateString,
                                                                     data.EndDateString.Contains('-') ? "dd-MM-yyyy" : "dd/MM/yyyy",
                                                                     CultureInfo.InvariantCulture);
                        }
                        _entities.Entry(taskmaster).State = EntityState.Modified;
                        await _entities.SaveChangesAsync();

                        //Delete existing attachment and Save new attachment
                        if (data.AttachedFiles.Any())
                        {
                            var taskAttachments = await _entities.TaskAttachments
                                                  .Where(s => s.TaskMasterId == data.TaskMasterId).ToListAsync();

                            if (taskAttachments.Any())
                            {
                                _entities.TaskAttachments.RemoveRange(taskAttachments);
                                await _entities.SaveChangesAsync();
                            }

                            taskAttachments = (from item in data.AttachedFiles
                                               where item != null
                                               select new TaskAttachment
                            {
                                TaskMasterId = taskmaster.TaskMasterId,
                                CreatedBy = userMasterId,
                                CreatedDate = DateTime.Now,
                                DisplayName = item.FileName,
                                FileName = Utilities.SaveFile(item,
                                                              Server.MapPath("~" + BasicProperty.ProjectAttachmentPath + taskmaster.ProjectId +
                                                                             "/"), Guid.NewGuid().ToString()),
                                FileSize = item.ContentLength / 1024
                            }).ToList();

                            if (taskAttachments.Any())
                            {
                                _entities.TaskAttachments.AddRange(taskAttachments);
                            }

                            TempData["Success"] = "Task updated successfully";
                        }
                    }
                    else
                    {
                        TempData["Error"] = "Request failed! Please try after some time.";
                    }
                }
                else
                {
                    //Save task details in taskmaster table
                    var taskmaster = new TaskMaster();
                    taskmaster.CopyProperties(data);
                    taskmaster.TaskCode = projectDetails != null
                        ? "[" + projectDetails.Name.Substring(0, 2).ToUpper() + "-" + currentTask + "]"
                        : "[" + currentTask + "]";
                    taskmaster.CreatedBy   = userMasterId;
                    taskmaster.CreatedDate = DateTime.Now;
                    taskmaster.StartDate   = DateTime.ParseExact(data.StartDateString,
                                                                 data.StartDateString.Contains('-') ? "dd-MM-yyyy" : "dd/MM/yyyy", CultureInfo.InvariantCulture);
                    if (!string.IsNullOrWhiteSpace(data.EndDateString))
                    {
                        taskmaster.EndDate = DateTime.ParseExact(data.EndDateString,
                                                                 data.EndDateString.Contains('-') ? "dd-MM-yyyy" : "dd/MM/yyyy",
                                                                 CultureInfo.InvariantCulture);
                    }
                    _entities.TaskMasters.Add(taskmaster);
                    await _entities.SaveChangesAsync();

                    //Save attached file if any found
                    if (data.AttachedFiles.Any())
                    {
                        var taskAttachments = (from item in data.AttachedFiles
                                               where item != null
                                               select new TaskAttachment
                        {
                            TaskMasterId = taskmaster.TaskMasterId,
                            CreatedBy = userMasterId,
                            CreatedDate = DateTime.Now,
                            DisplayName = item.FileName,
                            FileName = Utilities.SaveFile(item,
                                                          Server.MapPath("~" + BasicProperty.ProjectAttachmentPath + taskmaster.ProjectId +
                                                                         "/"), Guid.NewGuid().ToString()),
                            FileSize = item.ContentLength / 1024
                        }).ToList();

                        if (taskAttachments.Any())
                        {
                            _entities.TaskAttachments.AddRange(taskAttachments);
                        }
                    }

                    //Save call
                    await _entities.SaveChangesAsync();

                    TempData["Success"] = "Task added successfully";
                }
            }

            return(RedirectToAction("Create"));
        }