Exemple #1
0
        public ActionResult Edit(BayerEmployee model, List <int?> selectedZones)
        {
            if (model == null)
            {
                NotifyUser(messageError: errorDefault, messageDebug: controllerTraceId + "Edit.511 User object was not received");
                return(RedirectToError());
            }

            if (controller.UpdateBayerEmployee(model, selectedZones) && controller.ResultManager.IsCorrect)
            {
                NotifyUser(resultManager: controller.ResultManager);
                return(RedirectToAction("Index"));
            }

            //if we reached this point, there was an error. Notify error before using controller again (the error message will be lost if we don't notify before)
            NotifyUser(resultManager: controller.ResultManager);

            //retrieve again user details (model doesn't contain all ada anymore, for example: roles object was lost)
            BayerEmployee auxEmployee = null;

            auxEmployee = controller.RetrieveEmployee(model.Id);
            if (auxEmployee == null || !controller.ResultManager.IsCorrect)
            {
                NotifyUser(resultManager: controller.ResultManager);
                return(RedirectToAction("Index"));
            }

            ViewBag.EmployeeZoneIds = EmployeeMunicipalitiesToZonesSelectList(auxEmployee.MunicipalitiesXEmployee);
            return(View(auxEmployee));
        }
        public bool Delete(int id = -1)
        {
            ResultManager.IsCorrect = false;

            //initial validations
            //-sys validations
            if (id == -1 || id == 0)
            {//no id was received
                ResultManager.Add(ErrorDefault, Trace + "Delete.111 No se recibió el id del usuario Bayer a eliminar");
                return(false);
            }

            //mark item as deleted
            try
            {
                BayerEmployee item = Repository.BayerEmployees.Get(id);
                if (item == null)
                {
                    throw new Exception("No se encontró un usuario Bayer con id '" + id + "'");
                }
                item.User.Cat_UserStatusId = 2;//2:deleted
                item.User.Hash             = null;
                item.User.Salt             = null;
                Repository.Complete();
                ResultManager.IsCorrect = true;
                return(true);
            }
            catch (Exception ex)
            {
                ResultManager.Add(ErrorDefault, Trace + "Delete.511 Excepción al eliminar el usuario Bayer con id '" + id + "'", ex);
            }
            return(false);
        }
        public bool UpdateAndApprove(ContractDistributor model)
        {
            ResultManager.IsCorrect = false;
            //initial validations
            //-sys validations
            if (model == null)
            {
                ResultManager.Add(ErrorDefault, Trace + "UpdateAndApprove.111 No se recibio el modelo");
                return(false);
            }
            //-business validations

            //approve
            ContractDistributor auxContract = null;
            BayerEmployee       auxRTV      = new BayerEmployee();

            try
            {
                auxContract = Repository.ContractsDistributor.Get(model.Id);

                auxContract.AmountGoalQ1    = model.AmountGoalQ1;
                auxContract.AmountGoalQ2    = model.AmountGoalQ2;
                auxContract.AmountGoalQ3    = model.AmountGoalQ3;
                auxContract.AmountGoalQ4    = model.AmountGoalQ4;
                auxContract.AmountGoalTotal = model.AmountGoalTotal;

                auxContract.ContractDistributorStatusId = 3;

                //set rtv info for email send (will be lost from auxContract after Repository.Complete())
                auxRTV.EMail = auxContract.RTVBayerEmployee.EMail;
                auxRTV.Name  = auxContract.RTVBayerEmployee.NameDisplay;

                Repository.Complete();
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ResultManager.Add(ErrorDefault, Trace + "UpdateAndApprove.511 Excepción al crear el nuevo elemento" + ex.Message);
            }

            if (ResultManager.IsCorrect)
            {
                ResultManager.Add("El convenio ha sido actualizado", "");

                if (SendEmailContractApproved(auxRTV.Name, auxRTV.EMail, auxContract.Id, auxContract.IdB))
                {
                    ResultManager.Add("Se ha enviado un correo al RTV para la aprobación final", "");
                }
                else
                {
                    ResultManager.Add("No se pudo enviar actualización por correo al RTV");
                }
            }

            return(ResultManager.IsCorrect);
        }
Exemple #4
0
 public ActionResult EmployeeCreate(BayerEmployee model, List <int?> selectedZone)
 {
     if (controller.CreateBayerEmployee(model, selectedZone) && controller.ResultManager.IsCorrect)
     {
         NotifyUser(messageOk: controller.ResultManager.ToDescriptionString(), messageDebug: controllerTraceId + "EmployeeCreate.831 employee created", resultDetails: controller.ErrorManager.ToStringList());
         return(RedirectToAction("Index"));
     }
     NotifyUser(messageError: controller.ResultManager.ToDescriptionString(), messageDebug: controllerTraceId + "EmployeeCreate.811", resultDetails: controller.ErrorManager.ToStringList());
     return(View(model));
 }
        /// <summary>
        /// This will provide a list of zones assigned to a BayerEmployee
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public List <string> GetBayerEmployeeZones(int id)
        {
            BayerEmployee   employeeData = Repository.BayerEmployees.Get(id);
            List <Cat_Zone> auxZones     = Repository.Zones.GetByMunicipalities(employeeData.MunicipalitiesXEmployee).ToList();
            List <string>   zoneNames    = new List <string>();

            foreach (Cat_Zone item in auxZones)
            {
                zoneNames.Add(item.Name);
            }

            return(zoneNames);
        }
        public BayerEmployee RetrieveEmployee(int id)
        {
            ResultManager.Clear();
            BayerEmployee auxEmployee = null;

            try
            {
                auxEmployee             = Repository.BayerEmployees.Get(id);
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ResultManager.Add(ErrorDefault, Trace + "RetrieveEmployee.111: Error al obtener item con id  '" + id + "'. Exception:", ex);
            }
            return(auxEmployee);
        }
Exemple #7
0
        public ActionResult EditBayerEmployee(BayerEmployee model /*, int selectedZone*/)
        {
            if (model == null)
            {
                NotifyUser(messageError: errorDefault, messageDebug: controllerTraceId + "Edit.511 User object was not received");
                return(RedirectToError());
            }

            if (controller.UpdateBayerEmployee(model /*, selectedZone*/) && controller.ResultManager.IsCorrect)
            {
                NotifyUser(messageOk: controller.ResultManager.ToDescriptionString());
                return(RedirectToAction("Index"));
            }

            NotifyUser(messageError: controller.ErrorManager.ToDescriptionString());
            return(RedirectToHome());
        }
Exemple #8
0
        public ActionResult Edit(BayerEmployee model)
        {
            if (model == null)
            {
                NotifyUser(messageError: errorDefault, messageDebug: controllerTraceId + "Edit.511 User object was not received");
                return(RedirectToError());
            }

            if (controller.UpdateUserDetails(model, CurrentUser.InRolesString) && controller.ResultManager.IsCorrect)
            {
                NotifyUser(messageOk: controller.ResultManager.ToDescriptionString());
                return(RedirectToAction("Index"));
            }

            NotifyUser(messageError: controller.ErrorManager.ToDescriptionString());
            return(RedirectToHome());
        }
Exemple #9
0
        /*deprecated: param userId only instead of all user object, so we can reuse method
         * public bool PerformPasswordReset(User model, string userPassword)
         * {
         *  Model.User newUser;
         *  try
         *  {
         *      //retrieve user from DB
         *      newUser = Repository.Users.Get(model.Id);
         *
         *      if (newUser.Cat_UserStatus.IdB != "created" && newUser.Cat_UserStatus.IdB != "active")
         *      {
         *          ErrorManager.Add(Trace + "CreateUser.311", ErrorDefault, "The user '" + model.NickName + "' was attempted to perform password reset while being in an unexpected status. Status expected 'created' or 'active', but current user status in DB is '" + newUser.Cat_UserStatus.IdB + "'");
         *          return false;
         *      }
         *
         *      //update password info
         *      string auxSalt;
         *      newUser.Hash = PSD.Security.Identity.HashPassword(userPassword, out auxSalt);
         *      newUser.Salt = auxSalt;
         *      newUser.FailedLoginAttempts = 0;
         *      newUser.LastLoginDate = PSD.Common.Dates.Today;
         *      newUser.LastPasswordChangeDate = PSD.Common.Dates.Today;
         *      newUser.LoginToken = null;
         *      newUser.LoginTokenGeneratedDate = null;
         *
         *      //update DB
         *      Repository.Complete();
         *  }
         *  catch (Exception ex)
         *  {
         *      ErrorManager.Add(Trace + "CreateUser.531", ErrorDefault, "Exception thrown when trying to create user '" + model.NickName + "'", detailException: ex);
         *      return false;
         *  }
         *
         *  User = newUser;
         *  return true;
         * }
         */
        public bool UpdateUserDetails(BayerEmployee model, string userRoleIdB)
        {
            if (model == null)
            {
                return(false);
            }

            if (IsMailAddressCurrentlyUsed(model.EMail, CurrentUser.Id))
            {
                ResultManager.Add(ErrorDefault, Trace + "La direccion de email '" + model.EMail + "' actualmente esta asignada a otro usuario, por favor ingresa una diferente.");
                return(false);
            }

            BayerEmployee auxEmployee = null;

            try
            {
                auxEmployee = Repository.BayerEmployees.Get(model.Id);
                //User.Cat_UserStatusId = model.Cat_UserStatusId;
                auxEmployee.User.NickName = model.EMail;
                auxEmployee.EMail         = model.EMail;
                auxEmployee.Name          = model.Name;
                auxEmployee.LastNameF     = model.LastNameF;
                auxEmployee.LastNameM     = model.LastNameM;
                auxEmployee.PhoneNumber   = model.PhoneNumber;


                Repository.Complete();
                ResultManager.Add("Perfil actualizado", "");
                ResultManager.IsCorrect = true;
                return(true);
            }
            catch (Exception ex)
            {
                ErrorManager.Add("", ErrorDefault, "", ex);
                ResultManager.Add(ErrorDefault, "");
                ResultManager.IsCorrect = false;
            }

            return(false);
        }
Exemple #10
0
        public ActionResult Edit(int Id = -1)
        {
            if (Id == -1)
            {
                NotifyUser(message: "Seleccione primero el usuario Bayer a editar haciendo click en su Id", messageDebug: controllerTraceId + "Edit.111: no Id was received");
                return(RedirectToAction("Index"));
            }

            BayerEmployee auxEmployee = null;

            auxEmployee = controller.RetrieveEmployee(Id);

            if (auxEmployee == null || !controller.ResultManager.IsCorrect)
            {
                NotifyUser(resultManager: controller.ResultManager);
                return(RedirectToAction("Index"));
            }

            ViewBag.EmployeeZoneIds = EmployeeMunicipalitiesToZonesSelectList(auxEmployee.MunicipalitiesXEmployee);

            return(View(auxEmployee));
        }
Exemple #11
0
        public ActionResult EmployeeDetail(int Id = -1, string selectedTab = "")
        {
            if (Id == -1)
            {
                NotifyUser(message: "Seleccione primero el empleado a consultar haciendo click en su Id", messageDebug: controllerTraceId + "EmployeeDetail.111: no Id was received");
                return(RedirectToAction("Index"));
            }

            bool          vf          = false;
            string        result      = string.Empty;
            BayerEmployee auxEmployee = null;

            try
            {
                auxEmployee = controller.RetrieveEmployee(Id);
                result      = "";
                vf          = true;
            }
            catch (Exception ex)
            {
                NotifyUser(messageError: errorDefault, messageDebug: controllerTraceId + "EmployeeDetail.311: Error while retrieving item '" + Id + "' from DB. Exception:", ex: ex);
            }

            if (vf)
            {
                if (auxEmployee == null)
                {
                    vf = false;
                    NotifyUser(messageError: "No se encontro el empleado", messageDebug: controllerTraceId + "EmployeeDetail.511: Error while retrieving item '" + Id + "', item id not found in DB");
                }
            }

            //ViewBag.SelectedTab = selectedTab;
            ViewBag.EmployeeZones = controller.RetrieveEmployeeZones(auxEmployee.MunicipalitiesXEmployee);
            return(View(auxEmployee));
        }
        public bool RegisterPurchase(ContractSubdistributor model, int selectedMonth = -1, decimal purchaseAmount = 0)
        {
            ResultManager.IsCorrect = false;
            //initial validations
            //-sys validations
            if (model == null)
            {
                ResultManager.Add(ErrorDefault, Trace + "RegisterPurchase.111 No se recibio el modelo");
                return(false);
            }
            //-business validations
            if (selectedMonth < 1 || selectedMonth > 12)
            {
                ResultManager.Add(ErrorDefault, Trace + "RegisterPurchase.311 Valor inesperado para mes seleccionado, se esperaba numero entre 1 y 12, se recibio '" + selectedMonth + "'");
                return(false);
            }

            //register purchase
            ContractSubdistributor auxContract = null;
            DistributorPurchasesXContractSubdistributor auxDistributorPurchase = null;
            BayerEmployee auxRTV = new BayerEmployee();

            try
            {
                auxContract = Repository.ContractsSubdistributor.Get(model.Id);
                int     purchaseId    = 0;
                decimal auxTotalMonth = 0;
                foreach (DistributorPurchasesXContractSubdistributor item in auxContract.DistributorPurchases)
                {
                    if (item.Distributor.IdB == CurrentUser.EmployeeId)
                    {
                        purchaseId = item.Id;
                    }
                }
                auxDistributorPurchase = Repository.DistributorPurchasesXContractSubdistributors.Get(purchaseId);

                switch (selectedMonth)
                {
                case 1:
                    auxContract.PurchaseTotalJan += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalJan;
                    auxContract.PurchaseTotalS1            += purchaseAmount;
                    auxDistributorPurchase.PurchaseJan     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS1 += purchaseAmount;
                    break;

                case 2:
                    auxContract.PurchaseTotalFeb += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalFeb;
                    auxContract.PurchaseTotalS1            += purchaseAmount;
                    auxDistributorPurchase.PurchaseFeb     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS1 += purchaseAmount;
                    break;

                case 3:
                    auxContract.PurchaseTotalMar += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalMar;
                    auxContract.PurchaseTotalS1            += purchaseAmount;
                    auxDistributorPurchase.PurchaseMar     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS1 += purchaseAmount;
                    break;

                case 4:
                    auxContract.PurchaseTotalApr += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalApr;
                    auxContract.PurchaseTotalS1            += purchaseAmount;
                    auxDistributorPurchase.PurchaseApr     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS1 += purchaseAmount;
                    break;

                case 5:
                    auxContract.PurchaseTotalMay += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalMay;
                    auxContract.PurchaseTotalS1            += purchaseAmount;
                    auxDistributorPurchase.PurchaseMay     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS1 += purchaseAmount;
                    break;

                case 6:
                    auxContract.PurchaseTotalJun += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalJun;
                    auxContract.PurchaseTotalS1            += purchaseAmount;
                    auxDistributorPurchase.PurchaseJun     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS1 += purchaseAmount;
                    break;

                case 7:
                    auxContract.PurchaseTotalJul += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalJul;
                    auxContract.PurchaseTotalS2            += purchaseAmount;
                    auxDistributorPurchase.PurchaseJul     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS2 += purchaseAmount;
                    break;

                case 8:
                    auxContract.PurchaseTotalAgo += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalAgo;
                    auxContract.PurchaseTotalS2            += purchaseAmount;
                    auxDistributorPurchase.PurchaseAgo     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS2 += purchaseAmount;
                    break;

                case 9:
                    auxContract.PurchaseTotalSep += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalSep;
                    auxContract.PurchaseTotalS2            += purchaseAmount;
                    auxDistributorPurchase.PurchaseSep     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS2 += purchaseAmount;
                    break;

                case 10:
                    auxContract.PurchaseTotalOct += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalOct;
                    auxContract.PurchaseTotalS2            += purchaseAmount;
                    auxDistributorPurchase.PurchaseOct     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS2 += purchaseAmount;
                    break;

                case 11:
                    auxContract.PurchaseTotalNov += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalNov;
                    auxContract.PurchaseTotalS2            += purchaseAmount;
                    auxDistributorPurchase.PurchaseNov     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS2 += purchaseAmount;
                    break;

                case 12:
                    auxContract.PurchaseTotalDic += purchaseAmount;
                    auxTotalMonth = auxContract.PurchaseTotalDic;
                    auxContract.PurchaseTotalS2            += purchaseAmount;
                    auxDistributorPurchase.PurchaseDic     += purchaseAmount;
                    auxDistributorPurchase.PurchaseTotalS2 += purchaseAmount;
                    break;
                }

                auxContract.PurchaseTotal            += purchaseAmount;
                auxDistributorPurchase.PurchaseTotal += purchaseAmount;

                //update coupon discount
                decimal auxDiscountPercentage = 0;
                PSD.Controller.BenefitPrograms.Coupon.CouponManagementController couponManagementContoller = new BenefitPrograms.Coupon.CouponManagementController(Configurations);
                auxDiscountPercentage = couponManagementContoller.GetDiscountPercentage(auxContract.GoalTotalPercentage, auxContract.DiscountType);
                if (auxDiscountPercentage > 0)
                {
                    auxContract.SubdistributorDiscountCoupon.HasCoupon    = true;
                    auxContract.SubdistributorDiscountCoupon.CouponAmount = (auxDiscountPercentage / 100) * auxContract.PurchaseTotal;

                    if (selectedMonth <= 6)
                    {
                        auxContract.SubdistributorDiscountCoupon.HasCouponS1    = true;
                        auxContract.SubdistributorDiscountCoupon.CouponAmountS1 = (auxDiscountPercentage / 100) * auxContract.PurchaseTotalS1;
                    }
                    else
                    {
                        auxContract.SubdistributorDiscountCoupon.HasCouponS2    = true;
                        auxContract.SubdistributorDiscountCoupon.CouponAmountS2 = (auxDiscountPercentage / 100) * auxContract.PurchaseTotalS2;
                    }
                }

                /*deprecated, value set for coupon S1 and S2 is wrong, it should be updated with the sum of all months promotions, not only current one (thru promotion loop?)
                 * //update coupon promotion
                 * decimal auxPromotionPercentage = 0;
                 * auxPromotionPercentage = couponManagementContoller.GetPromotionPercentage(auxTotalMonth, selectedMonth);
                 * if (auxPromotionPercentage > 0)
                 * {
                 *  auxContract.SubdistributorPromotionCoupon.HasCoupon = true;
                 *  auxContract.SubdistributorPromotionCoupon.CouponAmount = (auxPromotionPercentage / 100) * auxContract.PurchaseTotal;
                 *
                 *  if (selectedMonth <= 6)
                 *  {
                 *      auxContract.SubdistributorPromotionCoupon.HasCouponS1 = true;
                 *      auxContract.SubdistributorPromotionCoupon.CouponAmountS1 = (auxPromotionPercentage / 100) * auxTotalMonth;
                 *  }
                 *  else
                 *  {
                 *      auxContract.SubdistributorPromotionCoupon.HasCouponS2 = true;
                 *      auxContract.SubdistributorPromotionCoupon.CouponAmountS2 = (auxPromotionPercentage / 100) * auxTotalMonth;
                 *  }
                 * }
                 */

                //update coupon promotion
                //-clear previous amounts
                auxContract.SubdistributorPromotionCoupon.HasCoupon      = false;
                auxContract.SubdistributorPromotionCoupon.HasCouponS1    = false;
                auxContract.SubdistributorPromotionCoupon.HasCouponS2    = false;
                auxContract.SubdistributorPromotionCoupon.CouponAmount   = 0;
                auxContract.SubdistributorPromotionCoupon.CouponAmountS1 = 0;
                auxContract.SubdistributorPromotionCoupon.CouponAmountS2 = 0;

                //set new purchases into aux for looping
                decimal[] auxPurchaseXMonth = new decimal[13];
                auxPurchaseXMonth[1]  = auxContract.PurchaseTotalJan;
                auxPurchaseXMonth[2]  = auxContract.PurchaseTotalFeb;
                auxPurchaseXMonth[3]  = auxContract.PurchaseTotalMar;
                auxPurchaseXMonth[4]  = auxContract.PurchaseTotalApr;
                auxPurchaseXMonth[5]  = auxContract.PurchaseTotalMay;
                auxPurchaseXMonth[6]  = auxContract.PurchaseTotalJun;
                auxPurchaseXMonth[7]  = auxContract.PurchaseTotalJul;
                auxPurchaseXMonth[8]  = auxContract.PurchaseTotalAgo;
                auxPurchaseXMonth[9]  = auxContract.PurchaseTotalSep;
                auxPurchaseXMonth[10] = auxContract.PurchaseTotalOct;
                auxPurchaseXMonth[11] = auxContract.PurchaseTotalNov;
                auxPurchaseXMonth[12] = auxContract.PurchaseTotalDic;

                //loop thu each month and update coupon
                decimal auxPromotionPercentage = 0;
                for (int a = 1; a <= 12; a++)
                {
                    auxPromotionPercentage = couponManagementContoller.GetPromotionPercentage(auxPurchaseXMonth[a], a);
                    if (auxPromotionPercentage > 0)
                    {
                        auxContract.SubdistributorPromotionCoupon.HasCoupon     = true;
                        auxContract.SubdistributorPromotionCoupon.CouponAmount += (auxPromotionPercentage / 100) * auxPurchaseXMonth[a];

                        if (a <= 6)
                        {
                            auxContract.SubdistributorPromotionCoupon.HasCouponS1     = true;
                            auxContract.SubdistributorPromotionCoupon.CouponAmountS1 += (auxPromotionPercentage / 100) * auxPurchaseXMonth[a];
                        }
                        else
                        {
                            auxContract.SubdistributorPromotionCoupon.HasCouponS2     = true;
                            auxContract.SubdistributorPromotionCoupon.CouponAmountS2 += (auxPromotionPercentage / 100) * auxPurchaseXMonth[a];
                        }
                    }
                }


                Repository.Complete();
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ResultManager.Add(ErrorDefault, Trace + "UpdateAndApprove.511 Excepción al crear el nuevo elemento" + ex.Message);
            }

            if (ResultManager.IsCorrect)
            {
                ResultManager.Add("La compra ha sido registrada", "");

                if (true)//SendEmailContractApproved(auxRTV.Name, auxRTV.EMail, auxContract.Id, auxContract.IdB))
                {
                    //ResultManager.Add("Se ha enviado un correo al RTV para la aprobación final", "");
                }
                else
                {
                    //ResultManager.Add("No se pudo enviar actualización por correo al RTV");
                }
            }

            return(ResultManager.IsCorrect);
        }
        public bool Edit(DistributorPurchasesXContractSubdistributor model)
        {
            ResultManager.IsCorrect = false;
            //initial validations
            //-sys validations
            if (model == null)
            {
                ResultManager.Add(ErrorDefault, Trace + "Edit.111 No se recibio el modelo");
                return(false);
            }
            if (model.Id <= 0)
            {
                ResultManager.Add(ErrorDefault, Trace + "Edit.111 No se recibio el Id del DistributorPurchasesXContractSubdistributor a editar en el modelo");
                return(false);
            }
            if (model.ContractSubdistributorId <= 0)
            {
                ResultManager.Add(ErrorDefault, Trace + "Edit.111 No se recibio el Id del contrato a editar en el modelo");
                return(false);
            }
            //-business validations

            ContractSubdistributor auxContract = null;
            DistributorPurchasesXContractSubdistributor auxDistributorPurchase = null;
            BayerEmployee auxRTV       = new BayerEmployee();
            decimal       auxAmountdif = 0;

            try
            {
                auxContract            = Repository.ContractsSubdistributor.Get(model.ContractSubdistributorId);
                auxDistributorPurchase = Repository.DistributorPurchasesXContractSubdistributors.Get(model.Id);

                if (model.PurchaseJan != auxDistributorPurchase.PurchaseJan)
                {
                    auxAmountdif = model.PurchaseJan - auxDistributorPurchase.PurchaseJan;
                    auxContract.PurchaseTotalJan           += auxAmountdif;
                    auxContract.PurchaseTotalS1            += auxAmountdif;
                    auxDistributorPurchase.PurchaseJan     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS1 += auxAmountdif;
                }
                if (model.PurchaseFeb != auxDistributorPurchase.PurchaseFeb)
                {
                    auxAmountdif = model.PurchaseFeb - auxDistributorPurchase.PurchaseFeb;
                    auxContract.PurchaseTotalFeb           += auxAmountdif;
                    auxContract.PurchaseTotalS1            += auxAmountdif;
                    auxDistributorPurchase.PurchaseFeb     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS1 += auxAmountdif;
                }
                if (model.PurchaseMar != auxDistributorPurchase.PurchaseMar)
                {
                    auxAmountdif = model.PurchaseMar - auxDistributorPurchase.PurchaseMar;
                    auxContract.PurchaseTotalMar           += auxAmountdif;
                    auxContract.PurchaseTotalS1            += auxAmountdif;
                    auxDistributorPurchase.PurchaseMar     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS1 += auxAmountdif;
                }
                if (model.PurchaseApr != auxDistributorPurchase.PurchaseApr)
                {
                    auxAmountdif = model.PurchaseApr - auxDistributorPurchase.PurchaseApr;
                    auxContract.PurchaseTotalApr           += auxAmountdif;
                    auxContract.PurchaseTotalS1            += auxAmountdif;
                    auxDistributorPurchase.PurchaseApr     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS1 += auxAmountdif;
                }
                if (model.PurchaseMay != auxDistributorPurchase.PurchaseMay)
                {
                    auxAmountdif = model.PurchaseMay - auxDistributorPurchase.PurchaseMay;
                    auxContract.PurchaseTotalMay           += auxAmountdif;
                    auxContract.PurchaseTotalS1            += auxAmountdif;
                    auxDistributorPurchase.PurchaseMay     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS1 += auxAmountdif;
                }
                if (model.PurchaseJun != auxDistributorPurchase.PurchaseJun)
                {
                    auxAmountdif = model.PurchaseJun - auxDistributorPurchase.PurchaseJun;
                    auxContract.PurchaseTotalJun           += auxAmountdif;
                    auxContract.PurchaseTotalS1            += auxAmountdif;
                    auxDistributorPurchase.PurchaseJun     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS1 += auxAmountdif;
                }
                if (model.PurchaseJul != auxDistributorPurchase.PurchaseJul)
                {
                    auxAmountdif = model.PurchaseJul - auxDistributorPurchase.PurchaseJul;
                    auxContract.PurchaseTotalJul           += auxAmountdif;
                    auxContract.PurchaseTotalS2            += auxAmountdif;
                    auxDistributorPurchase.PurchaseJul     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS2 += auxAmountdif;
                }
                if (model.PurchaseAgo != auxDistributorPurchase.PurchaseAgo)
                {
                    auxAmountdif = model.PurchaseAgo - auxDistributorPurchase.PurchaseAgo;
                    auxContract.PurchaseTotalAgo           += auxAmountdif;
                    auxContract.PurchaseTotalS2            += auxAmountdif;
                    auxDistributorPurchase.PurchaseAgo     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS2 += auxAmountdif;
                }
                if (model.PurchaseSep != auxDistributorPurchase.PurchaseSep)
                {
                    auxAmountdif = model.PurchaseSep - auxDistributorPurchase.PurchaseSep;
                    auxContract.PurchaseTotalSep           += auxAmountdif;
                    auxContract.PurchaseTotalS2            += auxAmountdif;
                    auxDistributorPurchase.PurchaseSep     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS2 += auxAmountdif;
                }
                if (model.PurchaseOct != auxDistributorPurchase.PurchaseOct)
                {
                    auxAmountdif = model.PurchaseOct - auxDistributorPurchase.PurchaseOct;
                    auxContract.PurchaseTotalOct           += auxAmountdif;
                    auxContract.PurchaseTotalS2            += auxAmountdif;
                    auxDistributorPurchase.PurchaseOct     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS2 += auxAmountdif;
                }
                if (model.PurchaseNov != auxDistributorPurchase.PurchaseNov)
                {
                    auxAmountdif = model.PurchaseNov - auxDistributorPurchase.PurchaseNov;
                    auxContract.PurchaseTotalNov           += auxAmountdif;
                    auxContract.PurchaseTotalS2            += auxAmountdif;
                    auxDistributorPurchase.PurchaseNov     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS2 += auxAmountdif;
                }
                if (model.PurchaseDic != auxDistributorPurchase.PurchaseDic)
                {
                    auxAmountdif = model.PurchaseDic - auxDistributorPurchase.PurchaseDic;
                    auxContract.PurchaseTotalDic           += auxAmountdif;
                    auxContract.PurchaseTotalS2            += auxAmountdif;
                    auxDistributorPurchase.PurchaseDic     += auxAmountdif;
                    auxDistributorPurchase.PurchaseTotalS2 += auxAmountdif;
                }

                auxContract.PurchaseTotal            += auxAmountdif;
                auxDistributorPurchase.PurchaseTotal += auxAmountdif;

                //update coupon discount
                //*clear coupon discount values
                auxContract.SubdistributorDiscountCoupon.CouponAmount   = 0;
                auxContract.SubdistributorDiscountCoupon.CouponAmountS1 = 0;
                auxContract.SubdistributorDiscountCoupon.CouponAmountS2 = 0;
                auxContract.SubdistributorDiscountCoupon.HasCoupon      = false;
                auxContract.SubdistributorDiscountCoupon.HasCouponS1    = false;
                auxContract.SubdistributorDiscountCoupon.HasCouponS2    = false;
                //*calculate new values
                decimal auxDiscountPercentage = 0;
                PSD.Controller.BenefitPrograms.Coupon.CouponManagementController couponManagementContoller = new BenefitPrograms.Coupon.CouponManagementController(Configurations);
                auxDiscountPercentage = couponManagementContoller.GetDiscountPercentage(auxContract.GoalTotalPercentage, auxContract.DiscountType);
                if (auxDiscountPercentage > 0)
                {
                    //update total
                    auxContract.SubdistributorDiscountCoupon.HasCoupon    = true;
                    auxContract.SubdistributorDiscountCoupon.CouponAmount = (auxDiscountPercentage / 100) * auxContract.PurchaseTotal;

                    //update semester1
                    //auxDiscountPercentage = couponManagementContoller.GetDiscountPercentage(auxContract.GoalTotalS1Percentage, auxContract.DiscountType);
                    if (auxDiscountPercentage > 0)
                    {
                        auxContract.SubdistributorDiscountCoupon.HasCouponS1    = true;
                        auxContract.SubdistributorDiscountCoupon.CouponAmountS1 = (auxDiscountPercentage / 100) * auxContract.PurchaseTotalS1;
                    }

                    //update semester2
                    //auxDiscountPercentage = couponManagementContoller.GetDiscountPercentage(auxContract.GoalTotalS2Percentage, auxContract.DiscountType);
                    if (auxDiscountPercentage > 0)
                    {
                        auxContract.SubdistributorDiscountCoupon.HasCouponS2    = true;
                        auxContract.SubdistributorDiscountCoupon.CouponAmountS2 = (auxDiscountPercentage / 100) * auxContract.PurchaseTotalS2;
                    }
                }

                //update coupon promotion
                //-clear previous amounts
                auxContract.SubdistributorPromotionCoupon.HasCoupon      = false;
                auxContract.SubdistributorPromotionCoupon.HasCouponS1    = false;
                auxContract.SubdistributorPromotionCoupon.HasCouponS2    = false;
                auxContract.SubdistributorPromotionCoupon.CouponAmount   = 0;
                auxContract.SubdistributorPromotionCoupon.CouponAmountS1 = 0;
                auxContract.SubdistributorPromotionCoupon.CouponAmountS2 = 0;

                //set new purchases into aux for looping
                decimal[] auxPurchaseXMonth = new decimal[13];
                auxPurchaseXMonth[1]  = auxContract.PurchaseTotalJan;
                auxPurchaseXMonth[2]  = auxContract.PurchaseTotalFeb;
                auxPurchaseXMonth[3]  = auxContract.PurchaseTotalMar;
                auxPurchaseXMonth[4]  = auxContract.PurchaseTotalApr;
                auxPurchaseXMonth[5]  = auxContract.PurchaseTotalMay;
                auxPurchaseXMonth[6]  = auxContract.PurchaseTotalJun;
                auxPurchaseXMonth[7]  = auxContract.PurchaseTotalJul;
                auxPurchaseXMonth[8]  = auxContract.PurchaseTotalAgo;
                auxPurchaseXMonth[9]  = auxContract.PurchaseTotalSep;
                auxPurchaseXMonth[10] = auxContract.PurchaseTotalOct;
                auxPurchaseXMonth[11] = auxContract.PurchaseTotalNov;
                auxPurchaseXMonth[12] = auxContract.PurchaseTotalDic;

                //loop thu each month and update coupon
                decimal auxPromotionPercentage = 0;
                for (int a = 1; a <= 12; a++)
                {
                    auxPromotionPercentage = couponManagementContoller.GetPromotionPercentage(auxPurchaseXMonth[a], a);
                    if (auxPromotionPercentage > 0)
                    {
                        auxContract.SubdistributorPromotionCoupon.HasCoupon     = true;
                        auxContract.SubdistributorPromotionCoupon.CouponAmount += (auxPromotionPercentage / 100) * auxPurchaseXMonth[a];

                        if (a <= 6)
                        {
                            auxContract.SubdistributorPromotionCoupon.HasCouponS1     = true;
                            auxContract.SubdistributorPromotionCoupon.CouponAmountS1 += (auxPromotionPercentage / 100) * auxPurchaseXMonth[a];
                        }
                        else
                        {
                            auxContract.SubdistributorPromotionCoupon.HasCouponS2     = true;
                            auxContract.SubdistributorPromotionCoupon.CouponAmountS2 += (auxPromotionPercentage / 100) * auxPurchaseXMonth[a];
                        }
                    }
                }

                Repository.Complete();
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ResultManager.Add(ErrorDefault, Trace + "Edit.511 Excepción al editar montos de compras" + ex.Message);
            }

            if (ResultManager.IsCorrect)
            {
                //ResultManager.Add("La compra ha sido registrada", "");
            }

            return(ResultManager.IsCorrect);
        }
        public bool CreateBayerEmployee(Model.BayerEmployee model, List <int?> zones = null)//Model.Employee employee)
        {
            if (zones == null)
            {
                zones = new List <int?>();
            }

            string token = PSD.Common.Random.Token(20);

            Model.User user = null;

            //business validations
            //*is email already used
            if (IsMailAddressCurrentlyUsed(model.EMail))
            {
                ResultManager.Add(ErrorDefault, Trace + "La direccion de email '" + model.EMail + "' actualmente esta asignada a otro usuario, por favor ingresa una diferente.");
                return(false);
            }
            //*is zone(s) already assigned
            foreach (int item in zones)
            {
                MunicipalitiesXEmployee auxMunicipality = null;
                switch (model.User.RolesXUser.First().Cat_UserRoleId)
                {
                case 3:
                    auxMunicipality = Repository.BayerEmployees.GRVAssignedToZone(item);
                    if (auxMunicipality != null)
                    {
                        ResultManager.Add("La zona '" + auxMunicipality.Municipality.Zone.Name + "' ya esta asignada al GRV '" + auxMunicipality.BayerEmployee.NameDisplay + "'", Trace + "CreateBayerEmployee.311 Zona en conflicto 'id:" + item + "'");
                        return(false);
                    }
                    break;

                case 5:
                    auxMunicipality = Repository.BayerEmployees.GRVAssignedToZone(item);
                    if (auxMunicipality != null)
                    {
                        ResultManager.Add("La zona '" + auxMunicipality.Municipality.Zone.Name + "' ya esta asignada al RTV '" + auxMunicipality.BayerEmployee.NameDisplay + "'", Trace + "CreateBayerEmployee.321 Zona en conflicto 'id:" + item + "'");
                        return(false);
                    }
                    break;

                default:
                    ResultManager.Add(ErrorDefault, Trace + "CreateBayerEmployee.391 rol de usuario no esperado'" + model.User.RolesXUser.First().Cat_UserRoleId + "'");
                    return(false);
                }
            }

            try
            {
                user = new User();
                user.Cat_UserStatusId        = 4;
                user.Cat_UserStatus          = Repository.UserStatuses.Get(4);///TODO: why do I need this if i already set statusId (doesn't update automatically unless i restart app)
                user.NickName                = model.EMail;
                user.FailedLoginAttempts     = 0;
                user.LoginToken              = token;
                user.LoginTokenGeneratedDate = PSD.Common.Dates.Today;

                Model.RolesXUser rolesXUser = new RolesXUser();
                rolesXUser.UserId         = user.Id;
                rolesXUser.Cat_UserRoleId = model.User.RolesXUser.First().Cat_UserRoleId;//Repository.UserRoles.GetByRoleIdB(selectedRoleIdB).Id;
                //Repository.RolesXUser.Add(rolesXUser);
                user.RolesXUser = new List <RolesXUser>()
                {
                    rolesXUser
                };

                Model.BayerEmployee employee = new BayerEmployee();
                employee.IdB       = model.IdB;
                employee.Name      = string.IsNullOrWhiteSpace(model.Name) ? "" : model.Name;
                employee.LastNameF = string.IsNullOrWhiteSpace(model.LastNameF) ? "" : model.LastNameF;
                employee.LastNameM = string.IsNullOrWhiteSpace(model.LastNameM) ? "" : model.LastNameM;
                employee.EMail     = model.EMail;
                employee.User      = user;

                //zones
                IEnumerable <AddressMunicipality> municipalitiesXZone = Repository.AddressMunicipalities.GetByZoneIds(zones);
                MunicipalitiesXEmployee           municipalityXEmployee;
                List <MunicipalitiesXEmployee>    municipalitiesXEmployee = new List <MunicipalitiesXEmployee>();
                foreach (AddressMunicipality item in municipalitiesXZone)
                {
                    municipalityXEmployee = new MunicipalitiesXEmployee();
                    municipalityXEmployee.AddressMunicipalityAddressStateId = item.AddressStateId;
                    municipalityXEmployee.AddressMunicipalityId             = item.Id;
                    municipalityXEmployee.BayerEmployeeId = employee.Id;
                    municipalitiesXEmployee.Add(municipalityXEmployee);
                }
                employee.MunicipalitiesXEmployee = municipalitiesXEmployee;

                Repository.BayerEmployees.Add(employee);

                Repository.Complete();
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ErrorManager.Add(Trace + "", ErrorDefault, "exception while creating employee", ex);
                ResultManager.IsCorrect = false;
                ResultManager.Add(ErrorDefault, "No se ha creado el nuevo usuario");
                return(false);
            }

            if (SendUserInvitationEmail(user))
            {
                ResultManager.Add("El usuario se ha creado correctamente, se le ha enviado un correo con la invitación a activar su cuenta", "");
            }
            else
            {
                ResultManager.Add("El usuario se ha creado correctamente, sin embargo hubo un problema al enviar la invitación de correo");
            }
            return(ResultManager.IsCorrect);
        }
        public bool UpdateBayerEmployee(BayerEmployee model, List <int?> selectedZones)
        {
            if (model == null)
            {
                return(false);
            }

            //business validations
            //*is email already used
            if (IsMailAddressCurrentlyUsed(model.EMail, model.Id))
            {
                ResultManager.Add(ErrorDefault, Trace + "La direccion de email '" + model.EMail + "' actualmente esta asignada a otro usuario, por favor ingresa una diferente.");
                return(false);
            }
            //*is zone(s) already assigned
            foreach (int item in selectedZones)
            {
                MunicipalitiesXEmployee auxMunicipality = null;
                switch (model.User.RolesXUser.First().Cat_UserRoleId)
                {
                case 3:
                    auxMunicipality = Repository.BayerEmployees.GRVAssignedToZone(item);
                    if (auxMunicipality != null && auxMunicipality.BayerEmployeeId != model.Id)
                    {
                        ResultManager.Add("La zona '" + auxMunicipality.Municipality.Zone.Name + "' ya esta asignada al GRV '" + auxMunicipality.BayerEmployee.NameDisplay + "'", Trace + "CreateBayerEmployee.311 Zona en conflicto 'id:" + item + "'");
                        return(false);
                    }
                    break;

                case 5:
                    auxMunicipality = Repository.BayerEmployees.RTVAssignedToZone(item);
                    if (auxMunicipality != null && auxMunicipality.BayerEmployeeId != model.Id)
                    {
                        ResultManager.Add("La zona '" + auxMunicipality.Municipality.Zone.Name + "' ya esta asignada al RTV '" + auxMunicipality.BayerEmployee.NameDisplay + "'", Trace + "CreateBayerEmployee.321 Zona en conflicto 'id:" + item + "'");
                        return(false);
                    }
                    break;

                default:
                    ResultManager.Add(ErrorDefault, Trace + "CreateBayerEmployee.391 rol de usuario no esperado'" + model.User.RolesXUser.First().Cat_UserRoleId + "'");
                    return(false);
                }
            }

            BayerEmployee auxEmployee = null;

            try
            {
                auxEmployee = Repository.BayerEmployees.Get(model.Id);
                //User.Cat_UserStatusId = model.Cat_UserStatusId;
                auxEmployee.IdB           = model.IdB;
                auxEmployee.User.NickName = model.EMail;
                auxEmployee.EMail         = model.EMail;
                auxEmployee.Name          = model.Name;
                auxEmployee.LastNameF     = model.LastNameF;
                auxEmployee.LastNameM     = model.LastNameM;
                auxEmployee.PhoneNumber   = model.PhoneNumber;

                List <MunicipalitiesXEmployee> auxMXE = new List <MunicipalitiesXEmployee>();
                bool auxExist;

                //update selected zones
                if (selectedZones == null) //is there a zone selected on this last change?
                {                          //none selected, remove all
                    foreach (MunicipalitiesXEmployee item in auxEmployee.MunicipalitiesXEmployee)
                    {
                        //auxEmployee.MunicipalitiesXEmployee.Remove(item);
                        Repository.MunicipalitiesXEmployee.Remove(item.Id);
                    }
                }
                else
                {//some selected, update
                    //identify records to delete (not selected anymore)
                    foreach (MunicipalitiesXEmployee item in auxEmployee.MunicipalitiesXEmployee)
                    {
                        auxExist = false;
                        foreach (int itemSelectedZoneId in selectedZones)
                        {
                            if (item.Municipality.Cat_ZoneId == itemSelectedZoneId)
                            {
                                auxExist = true;
                                break;
                            }
                        }
                        if (!auxExist)
                        {
                            auxMXE.Add(item);
                        }
                    }
                    //delete records (not selected anymore)
                    foreach (MunicipalitiesXEmployee item in auxMXE)
                    {
                        Repository.MunicipalitiesXEmployee.Remove(item.Id);
                    }
                    auxMXE.Clear();

                    //identify records to add (not yet in db)
                    List <AddressMunicipality> municipalitiesXZone = (List <AddressMunicipality>)Repository.AddressMunicipalities.GetByZoneIds(selectedZones);
                    foreach (AddressMunicipality item in municipalitiesXZone)
                    {
                        auxExist = false;
                        foreach (MunicipalitiesXEmployee itemMXE in auxEmployee.MunicipalitiesXEmployee)
                        {
                            if (item.Id == itemMXE.AddressMunicipalityId)
                            {
                                auxExist = true;
                                break;
                            }
                        }
                        if (!auxExist)
                        {
                            auxMXE.Add(new MunicipalitiesXEmployee()
                            {
                                AddressMunicipalityAddressStateId = item.AddressStateId,
                                AddressMunicipalityId             = item.Id,
                                BayerEmployeeId = auxEmployee.Id
                            });
                        }
                    }
                    //insert records (not yet in db)
                    foreach (MunicipalitiesXEmployee item in auxMXE)
                    {
                        auxEmployee.MunicipalitiesXEmployee.Add(item);
                    }
                    auxMXE.Clear();
                }

                Repository.Complete();
                ResultManager.Add("Perfil actualizado", "");
                ResultManager.IsCorrect = true;
                return(true);
            }
            catch (Exception ex)
            {
                ErrorManager.Add("", ErrorDefault, "", ex);
                ResultManager.Add(ErrorDefault, "");
            }

            return(false);
        }
        public bool CreateEmployee(Model.BayerEmployee model /*, string selectedRoleIdB*/)//Model.Employee employee)
        {
            ResultManager.Clear();
            string token = PSD.Common.Random.Token(20);

            Model.User user = null;

            try
            {
                user = new User();
                user.Cat_UserStatusId        = 4;
                user.Cat_UserStatus          = Repository.UserStatuses.Get(4);///TODO: why do I need this if i already set statusId (doesn't update automatically unless i restart app)
                user.NickName                = model.EMail;
                user.FailedLoginAttempts     = 0;
                user.LoginToken              = token;
                user.LoginTokenGeneratedDate = PSD.Common.Dates.Today;

                Model.RolesXUser rolesXUser = new RolesXUser();
                rolesXUser.UserId         = user.Id;
                rolesXUser.Cat_UserRoleId = model.User.RolesXUser.First().Cat_UserRoleId;//Repository.UserRoles.GetByRoleIdB(selectedRoleIdB).Id;
                //Repository.RolesXUser.Add(rolesXUser);
                user.RolesXUser = new List <RolesXUser>()
                {
                    rolesXUser
                };

                Model.BayerEmployee employee = new BayerEmployee();
                employee.IdB       = model.IdB;
                employee.Name      = string.IsNullOrWhiteSpace(model.Name) ? "" : model.Name;
                employee.LastNameF = string.IsNullOrWhiteSpace(model.LastNameF) ? "" : model.LastNameF;
                employee.LastNameM = string.IsNullOrWhiteSpace(model.LastNameM) ? "" : model.LastNameM;
                employee.EMail     = model.EMail;
                employee.User      = user;

                Model.MunicipalitiesXEmployee        municipalityXEmployee;
                List <Model.MunicipalitiesXEmployee> municipalitiesXEmployee = new List <MunicipalitiesXEmployee>();
                foreach (MunicipalitiesXEmployee item in model.MunicipalitiesXEmployee)
                {
                    municipalityXEmployee = new MunicipalitiesXEmployee();
                    municipalityXEmployee.AddressMunicipalityAddressStateId = item.AddressMunicipalityAddressStateId;
                    municipalityXEmployee.AddressMunicipalityId             = item.AddressMunicipalityId;
                    municipalityXEmployee.BayerEmployeeId = employee.Id;
                    municipalitiesXEmployee.Add(municipalityXEmployee);
                }
                employee.MunicipalitiesXEmployee = municipalitiesXEmployee;

                Repository.BayerEmployees.Add(employee);

                Repository.Complete();
                ResultManager.IsCorrect = true;
            }
            catch (Exception ex)
            {
                ErrorManager.Add(Trace + "", ErrorDefault, "exception while creating employee", ex);
                ResultManager.Add(ErrorDefault, "No se ha creado el nuevo usuario");
                return(false);
            }

            if (SendUserInvitationEmail(user))
            {
                ResultManager.Add("El usuario se ha creado correctamente", "");
            }
            else
            {
                //ResultManager.IsCorrect = false;
                ResultManager.Add("El usuario se ha creado correctamente, sin embargo hubo un problema al enviar la invitación de correo", "Puede reenviar la invitación desde la página de detalle de usuario");
            }
            return(ResultManager.IsCorrect);
        }
Exemple #17
0
        public bool UpdateBayerEmployee(BayerEmployee model /*, int selectedZone*/)
        {
            if (model == null)
            {
                return(false);
            }

            if (IsMailAddressCurrentlyUsed(model.EMail, CurrentUser.Id))
            {
                ResultManager.Add(ErrorDefault, Trace + "La direccion de email '" + model.EMail + "' actualmente esta asignada a otro usuario, por favor ingresa una diferente.");
                return(false);
            }

            BayerEmployee auxEmployee = null;

            try
            {
                auxEmployee = Repository.BayerEmployees.Get(model.Id);
                auxEmployee.User.NickName = model.EMail;
                auxEmployee.EMail         = model.EMail;
                auxEmployee.Name          = model.Name;
                auxEmployee.LastNameF     = model.LastNameF;
                auxEmployee.LastNameM     = model.LastNameM;
                auxEmployee.PhoneNumber   = model.PhoneNumber;

                //if profile was not completed, complete
                if (auxEmployee.User.Cat_UserStatusId == 5)
                {
                    auxEmployee.User.Cat_UserStatusId = 1;
                }

                /*Deprecated: user won't have ability to change zone on it's own
                 * //update selected zones
                 * List<MunicipalitiesXEmployee> auxMXE = new List<MunicipalitiesXEmployee>();
                 * if (selectedZone == null || selectedZone == -1 || selectedZone == 0)//is there a zone selected on this last change?
                 * {//none selected, remove all
                 *  foreach (MunicipalitiesXEmployee item in auxEmployee.MunicipalitiesXEmployee)
                 *  {
                 *      //auxEmployee.MunicipalitiesXEmployee.Remove(item);
                 *      Repository.MunicipalitiesXEmployee.Remove(item.Id);
                 *  }
                 * }
                 * else
                 * {//zone selected, update
                 *  //identify records to delete (not selected anymore)
                 *  foreach (MunicipalitiesXEmployee item in auxEmployee.MunicipalitiesXEmployee)
                 *  {
                 *      if (item.Municipality.Cat_ZoneId == selectedZone)
                 *      {
                 *          auxMXE.Add(item);
                 *      }
                 *  }
                 *  //delete records (not selected anymore)
                 *  foreach (MunicipalitiesXEmployee item in auxMXE)
                 *  {
                 *      Repository.MunicipalitiesXEmployee.Remove(item.Id);
                 *  }
                 *  auxMXE.Clear();
                 *
                 *  //identify records to add (not yet in db)
                 *  List<AddressMunicipality> municipalitiesXZone = (List<AddressMunicipality>)Repository.AddressMunicipalities.GetByZoneId(selectedZone);
                 *  bool auxExist;
                 *  foreach (AddressMunicipality item in municipalitiesXZone)
                 *  {
                 *      auxExist = false;
                 *      foreach (MunicipalitiesXEmployee itemMXE in auxEmployee.MunicipalitiesXEmployee)
                 *      {
                 *          if (item.Id == itemMXE.AddressMunicipalityId)
                 *          {
                 *              auxExist = true;
                 *              break;
                 *          }
                 *      }
                 *      if (!auxExist)
                 *      {
                 *          auxMXE.Add(new MunicipalitiesXEmployee()
                 *          {
                 *              AddressMunicipalityAddressStateId = item.AddressStateId,
                 *              AddressMunicipalityId = item.Id,
                 *              BayerEmployeeId = auxEmployee.Id
                 *          });
                 *      }
                 *  }
                 *  //insert records (not yet in db)
                 *  foreach (MunicipalitiesXEmployee item in auxMXE)
                 *  {
                 *      auxEmployee.MunicipalitiesXEmployee.Add(item);
                 *  }
                 *  auxMXE.Clear();
                 * }
                 */

                Repository.Complete();
                ResultManager.Add("Perfil actualizado", "");
                ResultManager.IsCorrect = true;
                return(true);
            }
            catch (Exception ex)
            {
                //Repository.Dispose();
                ErrorManager.Add("", ErrorDefault, "", ex);
                ResultManager.Add(ErrorDefault, "");
                ResultManager.IsCorrect = false;
            }

            return(false);
        }