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); }
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); }
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()); }
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()); }
/*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); }
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)); }
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); }
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); }