Пример #1
0
        public ActionResult AddNomination(NominationViewModel model, string submit)
        {
            _logger.Log("Nomination-AddNomination-POST");
            try
            {
                _logger.Log("Nomination-AddNomination-POST-try");
                var customDate = _customDateService.GetCustomDate(model.AwardId);
                var awardOfCurrentNomination = _awardService.GetAwardById(model.AwardId);
                var currentAwardFrequency    = _nominationService.GetAwardFrequencyById(awardOfCurrentNomination.FrequencyId);
                #region RestrictManagerLogic

                var noOfNominationForManager = Convert.ToInt32(ConfigurationManager.AppSettings["noOfNominationForManager"]);
                var startDate         = new DateTime();
                var endDate           = new DateTime();
                var countOfNomination = 0;
                _logger.Log("Todays Date: " + customDate);
                if (currentAwardFrequency.Code == FrequencyCode.MON.ToString())
                {
                    var firstDateOfCurrentMonth = new DateTime(customDate.Year, customDate.Month, 1);
                    startDate = firstDateOfCurrentMonth;
                    var noOfDaysInCurrentMonth = DateTime.DaysInMonth(customDate.Year, customDate.Month);
                    endDate           = new DateTime(customDate.Year, customDate.Month, noOfDaysInCurrentMonth);
                    countOfNomination = _nominationService.GetNominationCountByManagerIdForSom(model.ManagerId, startDate, endDate, model.AwardId);
                }
                else if (currentAwardFrequency.Code == FrequencyCode.YEAR.ToString())
                {
                    var firstDateOfCurrentYear = new DateTime(customDate.Year, 1, 1);
                    startDate         = firstDateOfCurrentYear;
                    countOfNomination = _nominationService.GetNominationCountByManagerIdForPinnacle(model.ManagerId, startDate, model.AwardId);
                }

                if (noOfNominationForManager <= countOfNomination)
                {
                    _logger.Log("Nomination-AddNomination-POST-try-if noOfNominationForManager <= countOfNomination");
                    return(Json(new { success = true, nominationExceed = true, message = "Only " + noOfNominationForManager + " nominations are allowed for " + awardOfCurrentNomination.Name + " !" }, JsonRequestBehavior.AllowGet));
                }

                #endregion RestrictManagerLogic

                var nomination = new Nomination
                {
                    AwardId   = model.AwardId,
                    ManagerId = model.ManagerId,
                    UserId    = model.ResourceId
                };

                switch (model.SelectResourcesBy)
                {
                case "Project":
                    nomination.ProjectID = model.ProjectID;
                    break;

                case "Department":
                    nomination.DepartmentId = model.DepartmentId;
                    break;

                case "Other":
                    nomination.Other = true;
                    nomination.OtherNominationReason = model.OtherNominationReason;
                    break;

                default:
                    break;
                }

                nomination.NominationDate = customDate;
                nomination.IsSubmitted    = submit.Equals("Submit");

                foreach (var criteria in model.Comments)
                {
                    if (criteria.Comment != null || criteria.Rating != 0)
                    {
                        nomination.ManagerComments.Add(
                            new ManagerComment
                        {
                            CriteriaId   = criteria.Id,
                            Comment      = criteria.Comment != null ? criteria.Comment : "",
                            Rating       = criteria.Rating,
                            Weightage    = criteria.Weightage,
                            FinalScore   = 0,
                            AdminComment = ""
                        }
                            );
                    }
                }
                nomination.Comment = model.MainComment != null ? model.MainComment : "";

                nomination.IsLocked = false;
                var wasSubmitted = _awardService.AddNomination(nomination);
                return(Json(new { success = wasSubmitted }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                _logger.Log("Nomination-AddNomination-POST-catch");
                _logger.Log("Nomination-AddNomination-POST-" + ex.Message);
            }
            return(Json(new { success = false }, JsonRequestBehavior.AllowGet));
        }